HEX
Server: LiteSpeed
System: Linux eticaretsrv4.isimtescil.net 3.10.0-962.3.2.lve1.5.26.7.el7.x86_64 #1 SMP Wed Oct 2 07:53:12 EDT 2019 x86_64
User: sioberen (1086)
PHP: 7.3.33
Disabled: NONE
Upload Files
File: //opt/alt/python37/lib/python3.7/site-packages/clsentry/client.py
#!/opt/alt/python37/bin/python3 -bb
# coding=utf-8
#
# Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2019 All Rights Reserved
#
# Licensed under CLOUD LINUX LICENSE AGREEMENT
# http://cloudlinux.com/docs/LICENSE.TXT

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import platform

from requests.exceptions import RequestException
from clcommon import cpapi, get_lve_version
from clcommon.utils import get_rhn_systemid_value
from raven import Client
from raven.transport import RequestsHTTPTransport
from clsentry.utils import get_pkg_version


class SafeRequestsHTTPTransport(RequestsHTTPTransport):

    def send(self, url, data, headers):
        try:
            super(SafeRequestsHTTPTransport, self).send(url, data, headers)
        except RequestException:
            # We hide errors while sending message to Sentry in varied cases:
            # problems with network, Sentry server is down, incorrect firewall's rules, etc
            pass


class UserlandClient(Client):
    """
    Userland's sentry client with some common settings.
    """
    def __init__(self, dsn, **options):
        options.update(dict(
            tags=self._get_user_tags(),
            ignore_exceptions=[
                KeyboardInterrupt,
            ],
            exclude_paths=[
                'sentry',
                'raven',
            ],
            auto_log_stacks=True,
            string_max_length=1000,
            list_max_length=100,
            processors=('clsentry.processors.UserlandSanitize', ),
            # async transport is noisy and prints messages like
            # 'Sentry is attempting to send 1 pending error messages'
            transport=SafeRequestsHTTPTransport,
        ))
        super(UserlandClient, self).__init__(dsn, **options)

    @classmethod
    def _get_user_tags(cls):
        """
        Get tags for easy search
        :rtype: dict
        """
        return {
            'Control Panel Name': cpapi.getCPName(),
            'CloudLinux version': get_rhn_systemid_value("os_release"),
            'Architecture': get_rhn_systemid_value("architecture"),
            'lve_version': get_lve_version()[0],
            # TODO: use 'include_paths' instead
            'lvemanager': get_pkg_version('lvemanager'),
            'alt-python27-cllib': get_pkg_version('alt-python27-cllib'),
            'lve-stats': get_pkg_version('lve-stats'),
            'cagefs': get_pkg_version('cagefs'),
            'kernel': platform.release(),
        }